#!/usr/bin/env python
# -*- coding: utf-8 -*-

##
# Módulos del sistema
import os
try:
    import pygtk
    pygtk.require("2.0")
    import gtk
    import gtk.glade
except ImportError, error:
    print error
    print "Necesitas la librería gráficas gtk+pygtk"
##
# Módulos propios
from lib.HTMLParser import HTMLParser
from lib.ParserCSS import ParserCSS

class Gchmtopdf:
    """Ventana principal.

    Sera la encargada de la gestión de la ventana principal de la aplicación en
    el entorno gráfico de gnome.
    """

    def __init__(self):
        """Constructor"""
        self.gladefile = "doc/gui/gnome/gchmtopdf.glade"
        self.wTree = gtk.glade.XML(self.gladefile, "window1")
        self.un_dict = {"on_window1_destroy": self.close,
                "on_button2_clicked": self.close,
                "on_button1_clicked": self.compilar,
                "on_checkbutton1_toggled": self.mostrar_configuracion}
        self.wTree.signal_autoconnect(self.un_dict)
        self.set_filter()
        self.libro = {}

    def close(self, widget):
        ""
        "Cerrara la aplicación."""
        print "Gracias por utilizar la aplicación"
        gtk.main_quit()

    def compilar(self, widget):
       """Permitirá compilar la aplicación."""
       print "Compilando..."
       self.importar_datos()
       if self.datos_validos():
            self.imprimir_en_consola()
            if self.libro["css"]:
                pass
            else:
                pass
       else:
            print "Imprimir un message box"
    
    def datos_validos(self):
        """Valida los campos obligatorios de la obligacion"""
        if ( self.libro["primero"] and
                self.libro["ultimo"] and
                self.libro["folder"]):
            return True
        else:
            return False

    def set_filter(self):
        """Crea filtro de archivo html.

        Permite...

        """
        filtro_html = gtk.FileFilter()
        filtro_html.add_mime_type("text/html")
        filtro_html.set_name("Documento HTML")

        self.wTree.get_widget("filechooserbutton3").add_filter(filtro_html)
        self.wTree.get_widget("filechooserbutton4").add_filter(filtro_html)


    def importar_datos(self):
        """Permitirá tomar los datos.

        No solo se encargará de la toma de datos sino que ademas comprobará los
        campos y en caso de faltar alguno ejecutará un GDialog.

        """

        # Datos del archivo
        self.libro["primero"] = self.wTree.get_widget("filechooserbutton3").get_filename()
        self.libro["ultimo"] = self.wTree.get_widget("filechooserbutton4").get_filename()
        self.libro["folder"] = self.wTree.get_widget("filechooserbutton5").get_filename()
        self.libro["imagenes"] = self.wTree.get_widget("filechooserbutton6").get_filename()
        # Datos del documento
        self.libro["titulo"] = self.wTree.get_widget("entry10").get_text()
        self.libro["autor"] = self.wTree.get_widget("entry11").get_text()
        self.libro["fecha"] = self.wTree.get_widget("entry12").get_text()
        # Probando el check Box
        if self.wTree.get_widget("checkbutton1").get_active():
            self.libro["css"] = True
        else:
            self.libro["css"] = False
        salida_tex = self.libro["titulo"].replace(" ","") + ".tex"
        self.libro["salida_tex"] = os.path.join(self.libro["folder"],salida_tex)

    def mostrar_configuracion(self, widget):
        """Button8 eneable/diseable.

        Gestionara el estado del boton configurar.

        """
        if self.wTree.get_widget("checkbutton1").get_active():
            self.wTree.get_widget("button8").set_sensitive(True)
        else:
            self.wTree.get_widget("button8").set_sensitive(False)

    def imprimir_en_consola(self):
        """Imprime en consola."""
        print "------------------------------------------------------"
        for k,v in self.libro.iteritems():
            print k,v
        print "------------------------------------------------------"
"""
if __name__=="__main__":
    aplicacion = Gchmtopdf()
    gtk.main()
"""
